---
title: 描述 `z-index` 以及如何形成堆叠上下文。
---

CSS 中的 `z-index` 属性控制重叠元素的垂直堆叠顺序。`z-index` 仅影响已定位的元素（具有 `position` 值不为 `static` 的元素）及其后代或 flex 项目。

在没有任何 `z-index` 值的情况下，元素按照它们在 DOM 中出现的顺序堆叠（在同一层级中，最下面的元素出现在最上面）。具有非静态定位的元素（及其子元素）将始终出现在具有默认静态定位的元素之上，而不管 HTML 层次结构如何。

堆叠上下文是包含一组层的元素。在局部堆叠上下文中，其子元素的 `z-index` 值是相对于该元素设置的，而不是相对于文档根元素。该上下文之外的层——即局部堆叠上下文的同级元素——不能位于其内的层之间。如果元素 B 位于元素 A 的顶部，而元素 A 的子元素 C 永远不能高于元素 B，即使元素 C 的 `z-index` 比元素 B 高。

每个堆叠上下文都是自包含的 - 在元素的content堆叠后，整个元素被认为在父堆叠上下文的堆叠顺序中。少数 CSS 属性会触发新的堆叠上下文，例如 `opacity` 小于 1、不是 `none` 的 `filter` 以及不是 `none` 的 `transform`。

***注意***：确切地说，什么元素有资格创建堆叠上下文，列在[规则](https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_positioned_layout/Stacking_context#The_stacking_context)的这一长串中。
